package algo.LocalSearch.vrp;

import algo.LocalSearch.VarIntLS;

public class CapacityConstraintViolations implements IFunctionVRP {
	//TODO data structure
	
	public CapacityConstraintViolations(VarIntLS[] next, VarIntLS[] prev, VarIntLS[] prevDepot, VarIntLS[] nextDepot, int C, int[] demand, int nbRoutes){
		// customers are 1, 2, ..., n
		// depot is 0
		// C is the capacity of each vehicle
		// demand[c] is the demand of customer c
		// next[c] is the next customer of c
		// prev[c] is the previous customer of c
		// prevDepot[k] is the previous customer of the depot on the route k (0 <= k <= nbRoutes-1)
		// nextDepot[k] is the next customer of the depot on the route k (0 <= k <= nbRoutes-1)
		// semantic: the total violations of the capacity constraint of route plan (solution) represented by next and prev
	}
	@Override
	public double getValue() {
		// TODO Auto-generated method stub
		return 0;
	}

	@Override
	public double evaluateOnePointMove(VarIntLS x, VarIntLS y) {
		// TODO Auto-generated method stub
		return 0;
	}

	@Override
	public double evaluateTwoPointsMove(VarIntLS x, VarIntLS y) {
		// TODO Auto-generated method stub
		return 0;
	}

	@Override
	public double evaluateTwoOptMove1(VarIntLS x, VarIntLS y) {
		// TODO Auto-generated method stub
		return 0;
	}

	@Override
	public double evaluateTwoOptMove2(VarIntLS x, VarIntLS y) {
		// TODO Auto-generated method stub
		return 0;
	}

	@Override
	public double evaluateTwoOptMove3(VarIntLS x, VarIntLS y) {
		// TODO Auto-generated method stub
		return 0;
	}

	@Override
	public double evaluateTwoOptMove4(VarIntLS x, VarIntLS y) {
		// TODO Auto-generated method stub
		return 0;
	}

	@Override
	public double evaluateTwoOptMove5(VarIntLS x, VarIntLS y) {
		// TODO Auto-generated method stub
		return 0;
	}

	@Override
	public double evaluateTwoOptMove6(VarIntLS x, VarIntLS y) {
		// TODO Auto-generated method stub
		return 0;
	}

	@Override
	public double evaluateTwoOptMove7(VarIntLS x, VarIntLS y) {
		// TODO Auto-generated method stub
		return 0;
	}

	@Override
	public double evaluateTwoOptMove8(VarIntLS x, VarIntLS y) {
		// TODO Auto-generated method stub
		return 0;
	}

	@Override
	public double evaluateOrOptMove1(VarIntLS x, int len, VarIntLS z) {
		// TODO Auto-generated method stub
		return 0;
	}

	@Override
	public double evaluateOrOptMove2(VarIntLS x, int len, VarIntLS z) {
		// TODO Auto-generated method stub
		return 0;
	}

	@Override
	public double evaluateThreeOptMove1(VarIntLS x, VarIntLS y, VarIntLS z) {
		// TODO Auto-generated method stub
		return 0;
	}

	@Override
	public double evaluateThreeOptMove2(VarIntLS x, VarIntLS y, VarIntLS z) {
		// TODO Auto-generated method stub
		return 0;
	}

	@Override
	public double evaluateThreeOptMove3(VarIntLS x, VarIntLS y, VarIntLS z) {
		// TODO Auto-generated method stub
		return 0;
	}

	@Override
	public double evaluateThreeOptMove4(VarIntLS x, VarIntLS y, VarIntLS z) {
		// TODO Auto-generated method stub
		return 0;
	}

	@Override
	public double evaluateThreeOptMove5(VarIntLS x, VarIntLS y, VarIntLS z) {
		// TODO Auto-generated method stub
		return 0;
	}

	@Override
	public double evaluateThreeOptMove6(VarIntLS x, VarIntLS y, VarIntLS z) {
		// TODO Auto-generated method stub
		return 0;
	}

	@Override
	public double evaluateThreeOptMove7(VarIntLS x, VarIntLS y, VarIntLS z) {
		// TODO Auto-generated method stub
		return 0;
	}

	@Override
	public double evaluateThreeOptMove8(VarIntLS x, VarIntLS y, VarIntLS z) {
		// TODO Auto-generated method stub
		return 0;
	}

	@Override
	public double evaluateCrossExchangeMove(VarIntLS x1, VarIntLS y1,
			VarIntLS x2, VarIntLS y2) {
		// TODO Auto-generated method stub
		return 0;
	}

	@Override
	public double propagateOnePointMove(VarIntLS x, VarIntLS y) {
		// TODO Auto-generated method stub
		return 0;
	}

	@Override
	public double propagateTwoPointsMove(VarIntLS x, VarIntLS y) {
		// TODO Auto-generated method stub
		return 0;
	}

	@Override
	public double propagateTwoOptMove1(VarIntLS x, VarIntLS y) {
		// TODO Auto-generated method stub
		return 0;
	}

	@Override
	public double propagateTwoOptMove2(VarIntLS x, VarIntLS y) {
		// TODO Auto-generated method stub
		return 0;
	}

	@Override
	public double propagateTwoOptMove3(VarIntLS x, VarIntLS y) {
		// TODO Auto-generated method stub
		return 0;
	}

	@Override
	public double propagateTwoOptMove4(VarIntLS x, VarIntLS y) {
		// TODO Auto-generated method stub
		return 0;
	}

	@Override
	public double propagateTwoOptMove5(VarIntLS x, VarIntLS y) {
		// TODO Auto-generated method stub
		return 0;
	}

	@Override
	public double propagateTwoOptMove6(VarIntLS x, VarIntLS y) {
		// TODO Auto-generated method stub
		return 0;
	}

	@Override
	public double propagateTwoOptMove7(VarIntLS x, VarIntLS y) {
		// TODO Auto-generated method stub
		return 0;
	}

	@Override
	public double propagateTwoOptMove8(VarIntLS x, VarIntLS y) {
		// TODO Auto-generated method stub
		return 0;
	}

	@Override
	public double propagateOrOptMove1(VarIntLS x, int len, VarIntLS z) {
		// TODO Auto-generated method stub
		return 0;
	}

	@Override
	public double propagateOrOptMove2(VarIntLS x, int len, VarIntLS z) {
		// TODO Auto-generated method stub
		return 0;
	}

	@Override
	public double propagateThreeOptMove1(VarIntLS x, VarIntLS y, VarIntLS z) {
		// TODO Auto-generated method stub
		return 0;
	}

	@Override
	public double propagateThreeOptMove2(VarIntLS x, VarIntLS y, VarIntLS z) {
		// TODO Auto-generated method stub
		return 0;
	}

	@Override
	public double propagateThreeOptMove3(VarIntLS x, VarIntLS y, VarIntLS z) {
		// TODO Auto-generated method stub
		return 0;
	}

	@Override
	public double propagateThreeOptMove4(VarIntLS x, VarIntLS y, VarIntLS z) {
		// TODO Auto-generated method stub
		return 0;
	}

	@Override
	public double propagateThreeOptMove5(VarIntLS x, VarIntLS y, VarIntLS z) {
		// TODO Auto-generated method stub
		return 0;
	}

	@Override
	public double propagateThreeOptMove6(VarIntLS x, VarIntLS y, VarIntLS z) {
		// TODO Auto-generated method stub
		return 0;
	}

	@Override
	public double propagateThreeOptMove7(VarIntLS x, VarIntLS y, VarIntLS z) {
		// TODO Auto-generated method stub
		return 0;
	}

	@Override
	public double propagateThreeOptMove8(VarIntLS x, VarIntLS y, VarIntLS z) {
		// TODO Auto-generated method stub
		return 0;
	}

	@Override
	public double propagateCrossExchangeMove(VarIntLS x1, VarIntLS y1,
			VarIntLS x2, VarIntLS y2) {
		// TODO Auto-generated method stub
		return 0;
	}

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub

	}

}
